home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / HandHeldPCPro30 / sdk.exe / Jupiter SDK / data1.cab / ATL_Samples / compctrl / CComCtrl.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-02-19  |  6.4 KB  |  221 lines

  1. // CComCtrl.h : Declaration of the CComCtrl
  2.  
  3. #ifndef __CCOMCTRL_H_
  4. #define __CCOMCTRL_H_
  5.  
  6. #include "resource.h"       // main symbols
  7. #include <atlctl.h>
  8. //#import "Polygon.dll" raw_interfaces_only, raw_native_types, no_namespace, named_guids 
  9. #include "Polygon.tlh"
  10.  
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CCComCtrl
  13. class ATL_NO_VTABLE CComCtrl : 
  14.     public CComObjectRootEx<CComSingleThreadModel>,
  15.     public CStockPropImpl<CComCtrl, ICComCtrl, &IID_ICComCtrl, &LIBID_COMPCTRLLib>,
  16.     public CComCompositeControl<CComCtrl>,
  17.     public IPersistStreamInitImpl<CComCtrl>,
  18.     public IOleControlImpl<CComCtrl>,
  19.     public IOleObjectImpl<CComCtrl>,
  20.     public IOleInPlaceActiveObjectImpl<CComCtrl>,
  21.     public IViewObjectExImpl<CComCtrl>,
  22.     public IOleInPlaceObjectWindowlessImpl<CComCtrl>,
  23.     public IPersistStorageImpl<CComCtrl>,
  24.     public ISpecifyPropertyPagesImpl<CComCtrl>,
  25.     public IQuickActivateImpl<CComCtrl>,
  26.     public IDataObjectImpl<CComCtrl>,
  27.     public IProvideClassInfo2Impl<&CLSID_CComCtrl, /*&DIID__CompEvents*/NULL, &LIBID_COMPCTRLLib>,
  28.     public CComCoClass<CComCtrl, &CLSID_CComCtrl>,
  29.     public IDispEventImpl<IDC_POLYCTL1, CComCtrl>,
  30.     public IDispEventImpl<IDC_SMILECTRL1, CComCtrl>
  31. {
  32. public:
  33.     CComCtrl()
  34.     {
  35.         m_bWindowOnly = TRUE;
  36.         CalcExtent(m_sizeExtent);
  37.     }
  38.  
  39. DECLARE_REGISTRY_RESOURCEID(IDR_CCOMCTRL)
  40.  
  41. BEGIN_COM_MAP(CComCtrl)
  42.     COM_INTERFACE_ENTRY(IDispatch)
  43.     COM_INTERFACE_ENTRY(IViewObjectEx)
  44.     COM_INTERFACE_ENTRY(IViewObject2)
  45.     COM_INTERFACE_ENTRY(IViewObject)
  46.     COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
  47.     COM_INTERFACE_ENTRY(IOleInPlaceObject)
  48.     COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
  49.     COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
  50.     COM_INTERFACE_ENTRY(IOleControl)
  51.     COM_INTERFACE_ENTRY(IOleObject)
  52.     COM_INTERFACE_ENTRY(IPersistStreamInit)
  53.     COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
  54.     COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
  55.     COM_INTERFACE_ENTRY(IQuickActivate)
  56.     COM_INTERFACE_ENTRY(IPersistStorage)
  57.     COM_INTERFACE_ENTRY(IDataObject)
  58.     COM_INTERFACE_ENTRY(IProvideClassInfo)
  59.     COM_INTERFACE_ENTRY(IProvideClassInfo2)
  60. END_COM_MAP()
  61.  
  62. BEGIN_PROPERTY_MAP(CComCtrl)
  63.     PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
  64.     PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
  65.     // Example entries
  66.     // PROP_ENTRY("Property Description", dispid, clsid)
  67. END_PROPERTY_MAP()
  68.  
  69.  
  70. BEGIN_MSG_MAP(CComCtrl)
  71.     COMMAND_HANDLER(IDC_WINK, BN_CLICKED, OnClickedWink)
  72.     COMMAND_HANDLER(IDC_SMILE, BN_CLICKED, OnClickedSmile)
  73.     COMMAND_HANDLER(IDC_SAD, BN_CLICKED, OnClickedSad)
  74.     MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  75.     COMMAND_HANDLER(IDC_DECREMENT, BN_CLICKED, OnClickedDecrement)
  76.     COMMAND_HANDLER(IDC_INCREMENT, BN_CLICKED, OnClickedIncrement)
  77.     CHAIN_MSG_MAP(CComCompositeControl<CComCtrl>)
  78. END_MSG_MAP()
  79. // Handler prototypes:
  80. //  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  81. //  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  82. //  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  83.  
  84.  
  85. // IViewObjectEx
  86.     DECLARE_VIEW_STATUS(0)
  87.  
  88. // ICComCtrl
  89. public:
  90.     int UpdateNumberOfSides(DWORD, int, long);
  91.     void UpdateSmileState();
  92.     void DecrementSides();
  93.     void IncrementSides();
  94.  
  95.     enum { IDD = IDD_COMPCTRL };
  96.  
  97.     LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  98.     {
  99.         UpdateNumberOfSides(0,0,0);
  100.         UpdateSmileState();
  101.  
  102.         return 0;
  103.     }
  104.  
  105.     // Buttons clicked:
  106.     LRESULT OnClickedIncrement(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
  107.     {
  108.         IncrementSides();
  109.         return 0;
  110.     }
  111.     LRESULT OnClickedDecrement(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
  112.     {
  113.         DecrementSides();
  114.         return 0;
  115.     }
  116.  
  117. //Sink map is used to set up event handling
  118. BEGIN_SINK_MAP(CComCtrl)
  119.     SINK_ENTRY(IDC_SMILECTRL1, 0x1, OnOutsideSmilectrl1)
  120.     SINK_ENTRY(IDC_SMILECTRL1, 0x2, OnInsideSmilectrl1)
  121.     SINK_ENTRY(IDC_POLYCTL1, 0x1, OnClickInPolyctl1)
  122.     SINK_ENTRY(IDC_POLYCTL1, 0x2, OnClickOutPolyctl1)
  123. END_SINK_MAP()
  124.  
  125.  
  126.     // Events from Polygon Control
  127.     void __stdcall OnClickInPolyctl1(LONG x, LONG y)
  128.     {
  129.         IncrementSides();
  130.     }
  131.     void __stdcall OnClickOutPolyctl1(LONG x, LONG y)
  132.     {
  133.         DecrementSides();
  134.     }
  135.     // Events from Smile Control
  136.     void __stdcall OnInsideSmilectrl1(OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
  137.     {
  138.         TCHAR szBuf1[60] = _T("");
  139.         int nResult = LoadString (_Module.m_hInst, IDS_SIMPLE, szBuf1, sizeof(szBuf1) );
  140.         MessageBox(szBuf1);
  141.     }
  142.     void __stdcall OnOutsideSmilectrl1()
  143.     {
  144.         TCHAR szBuf1[60] = _T("");
  145.         int nResult = LoadString (_Module.m_hInst, IDS_OUTSIDE, szBuf1, sizeof(szBuf1) );
  146.         MessageBox(szBuf1);
  147.     }
  148.  
  149.     // Buttons clicked:
  150.     LRESULT OnClickedSad(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
  151.     {
  152.         IDispatch* pISmiley;
  153.         HRESULT hr = GetDlgControl(IDC_SMILECTRL1, IID_IDispatch, (void**)&pISmiley );
  154.         if(SUCCEEDED(hr))
  155.         {
  156.             DISPID        dispidNamed = DISPID_PROPERTYPUT;
  157.             DISPPARAMS    dispparams;
  158.             VARIANT        pArg;
  159.  
  160.             pArg.vt = VT_BOOL;
  161.             pArg.boolVal = TRUE; // Sad
  162.  
  163.             dispparams.cArgs = 1;
  164.             dispparams.cNamedArgs = 1;
  165.             dispparams.rgdispidNamedArgs = &dispidNamed;
  166.             dispparams.rgvarg = &pArg;
  167.             
  168.             pISmiley->Invoke(1, IID_NULL, 0, DISPATCH_PROPERTYPUT, &dispparams, NULL, NULL, NULL);
  169.         }
  170.         return 0;
  171.     }
  172.     LRESULT OnClickedSmile(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
  173.     {
  174.         IDispatch* pISmiley;
  175.         HRESULT hr = GetDlgControl(IDC_SMILECTRL1, IID_IDispatch, (void**)&pISmiley );
  176.         if(SUCCEEDED(hr))
  177.         {
  178.             DISPID        dispidNamed = DISPID_PROPERTYPUT;
  179.             DISPPARAMS    dispparams;
  180.             VARIANT        pArg;
  181.  
  182.             pArg.vt = VT_BOOL;
  183.             pArg.boolVal = FALSE; // NOT Sad
  184.  
  185.             dispparams.cArgs = 1;
  186.             dispparams.cNamedArgs = 1;
  187.             dispparams.rgdispidNamedArgs = &dispidNamed;
  188.             dispparams.rgvarg = &pArg;
  189.             
  190.             pISmiley->Invoke(1, IID_NULL, 0, DISPATCH_PROPERTYPUT, &dispparams, NULL, NULL, NULL);
  191.         }
  192.         return 0;
  193.     }
  194.     LRESULT OnClickedWink(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
  195.     {
  196.         static BOOL bWink = TRUE;
  197.  
  198.         IDispatch* pISmiley;
  199.         HRESULT hr = GetDlgControl(IDC_SMILECTRL1, IID_IDispatch, (void**)&pISmiley );
  200.         if(SUCCEEDED(hr))
  201.         {
  202.             DISPPARAMS    dispparams;
  203.             VARIANT        pArg = {VT_I4, 0};
  204.  
  205.             pArg.lVal = bWink ? 1 : 0;
  206.             bWink = !bWink;
  207.  
  208.             memset(&dispparams, 0, sizeof dispparams);
  209.             dispparams.cArgs = 1;
  210.             dispparams.rgvarg = &pArg;
  211.             
  212.             pISmiley->Invoke(3, IID_NULL, 0, DISPATCH_METHOD, &dispparams, NULL, NULL, NULL);
  213.         }
  214.         return 0;
  215.     }
  216.  
  217.     
  218. };
  219.  
  220. #endif //__CCOMCTRL_H_
  221.